package editorsvg.css;

import editorsvg.editor.documento.ElementoSVG;

/**
 *
 * @author Jorge
 */
public class CondicionHijoDe extends Condicion {
    private Condicion condicionPadre;
    private Condicion condicionHijo;

    public CondicionHijoDe(Condicion condicionPadre, Condicion condicionHijo) {
        this.condicionPadre = condicionPadre;
        this.condicionHijo = condicionHijo;
    }

    @Override
    public String toString() {
        return condicionHijo + " hijo de " + condicionPadre;
    }
    
    @Override
    public boolean evaluar(ElementoSVG elemento, Regla regla) {
                
        if (condicionPadre == null || condicionHijo == null) {
            return false;
        }
            
        if (!condicionPadre.evaluar(elemento, null)) {
            return false;
        }
         
        if (elemento.getHijos() == null) {
            return false;
        }
        
        boolean cumple = false;
        for (ElementoSVG hijo : elemento.getHijos()) {
            cumple |= condicionHijo.evaluar(hijo, regla);
        }
        return cumple;
    }

    @Override
    public int getEspecificidad() {
        return condicionPadre.getEspecificidad() + condicionHijo.getEspecificidad();
    }
}
